import axios from 'axios'

// 设置请求不同域名的接口
// axios.defaults.baseURL = 'http://localhost:8888/api/private/v1'
axios.defaults.baseURL = '/api/private/v1'

// 使用请求拦截，它会将所有的请求拦截下来
axios.interceptors.request.use(function (config) {
  // config参数表示请求对象(包括请求方法，方式，时间等)
  // console.log(config)
  // 先从本地取本地的值，判断到底有没有token值，如果有就忘headers里面塞token，如果没有就直接return
  let mytoken = localStorage.getItem('mytoken') || ''
  if (mytoken) {
    // 存在token就将token塞进请求头的某个字段中这个字段名不能随便取，它是一个前后端约定好的值
    config.headers['Authorization'] = mytoken
  }
  // 请求对象必须要return回去
  return config
}, function (error) {
  // 失败的回调
  return Promise.reject(error)
})

// 4.1 定义登录接口
export const postLogin = obj => {
  return axios.post('/login', obj).then(res => res.data)
}

// 用户数据列表
export const getUserList = obj => axios.get('/users', { params: obj }).then(res => res.data)

// 添加用户
export const addUser = obj => axios.post('/users', obj).then(res => res.data)

// 删除用户
export const delUser = id => axios.delete(`/users/${id}`).then(res => res.data)

// 编辑用户
export const editUser = obj => axios.put(`/users/${obj.id}`, { email: obj.email, mobile: obj.mobile }).then(res => res.data)

// 切换用户状态
export const changeState = (id, state) => axios.put(`users/${id}/state/${state}`).then(res => res.data)

// 获取角色列表
export const getRoles = () => axios.get('/roles').then(res => res.data)

// 给用户分配角色
export const grantRole = (id, rid) => axios.put(`users/${id}/role`, {rid: rid}).then(res => res.data)

// 获取所有的权限列表
export const getRights = type => axios.get(`rights/${type}`).then(res => res.data)

// 删除指定角色的权限
export const delUserRight = (rightId, roleId) => axios.delete(`roles/${roleId}/rights/${rightId}`).then(res => res.data)

// 添加角色
export const addRoles = obj => axios.post('roles', obj).then(res => res.data)

// 删除角色
export const deleteRoles = id => axios.delete(`roles/${id}`).then(res => res.data)

// 给角色分配权限 (接口文档描述有问题，ridStrs不是数组，是字符串)
export const grantUserRight = (roleId, ridStrs) => axios.post(`roles/${roleId}/rights`, {rids: ridStrs}).then(res => res.data)

// 动态获取左侧菜单
export const getMenus = () => axios.get('/menus').then(res => res.data)

// 获取商品分类数据 --注意接口文档有问题，参数还要添加两个
export const getCategories = (type, pagenum, pagesize) => axios.get('/categories', {params: {type: type, pagenum: pagenum, pagesize: pagesize}}).then(res => res.data)

// 添加分类
export const addCate = obj => axios.post('categories', obj).then(res => res.data)
